Allocate a new NamedObject and initializes it as requested.
This object can then be used as an object in a name space.
Optionally you give this object a name space, and use it to
nest name spaces. You can also allocate some memory which is
attached to this object for your own personal use.
When the object is allocated, it will automatically have one user.
To allow other users to remove this object from a namespace, you
must call ReleaseNamedObject() on this object.